// 解释器模式 - 非终结符表达式
// 表示逻辑或（OR）操作
// 将两个子表达式的解释结果进行逻辑或运算
public class OrExpression : IExpression
{
  // 左侧表达式
  private readonly IExpression _left;
  // 右侧表达式
  private readonly IExpression _right;

  // 构造函数 - 初始化左右两个子表达式
  public OrExpression(IExpression left, IExpression right)
  {
    _left = left;
    _right = right;
  }

  // 实现解释方法
  // 对左右两个表达式进行逻辑或操作
  public bool Interpret(Dictionary<string, bool> context)
  {
    // 递归解释左右子表达式，并进行逻辑或运算
    return _left.Interpret(context) || _right.Interpret(context);
  }
}
